Control system for producing multi-axis contour movement for a stepping motor drive

ABSTRACT

A multi-axis machine tool or the like employing controls for an open loop stepping motor system of two or more axes in which variable frequency feedrate clock pulses are generated to ultimately control the speed of the various stepping motors. The frequency of the feedrate clock pulses is modified in accordance with programmed information; additional information defines the tool path which can either be straight line or circular arc segments and characteristically the feedrate clock pulse generation means increases pulse frequency at the beginning of a segment in such manner as to increase motor speed in accordance with system inertial limitations from a speed below to a speed above the slewing rate of the stepping motors. Thereafter upon sensing a predetermined distance from the end of the segment, pulse frequency is reduced to reduce the stepping motor speed below the slewing rate. The feedrate clock pulse chain is used by the interpolation logic to trigger two consecutive calculations, the time lapse between the clock pulse and the second calculation being so short compared to the time lapse between consecutive clock pulses, that the action initiated by the results of the calculations can be considered for all intents and purposes to be coincident with the clock pulse. The first calculation always generates a major axis interpolation pulse, during the second calculation an error accumulation register is tested to determine whether a minor axis interpolation pulse should be generated to minimize the error from the programmed path. Thus the major axis interpolation pulse chain corresponds directly to the frequency of the feedrate clock chain, the minor axis interpolation pulse chain may be irregular with respect to the chain of feedrate clock pulses. A predetermined member of interpolation pulses are then used to generate each of the major and minor axis step pulses so that any irregularity in minor axis pulse frequency is eliminated and resolution is improved.

United States atent 1 Kreithen et al.

[ Oct. 23, 1973 CONTROL SYSTEM FOR PRODUCING MULTl-AXIS CONTOUR MOVEMENTFOR A STEPPING MOTOR DRIVE feedrate clock pulses is modified inaccordance with programmed information; additional information definesthe tool path which can either be straight line or circular arc segmentsand characteristically the feed- [75] Inventors: Marvm Krelthen Hummgdonrate clock pulse generation means increases pulse frevaney; i Lawlerquency at the beginning of a segment in such manner Newportvlne both ofas to increase motor speed in accordance with system [73] Assignee:Bridgeport Machines, Inc., inertial limitations from a speed below to aspeed Bridgeport, Conn. above the slewing rate of the stepping motors.Thereafter u on sensin a redetermined distance from the [22] Filed: 1972end of lhe segmeit, gulse frequency is reduced to re- [21] Appl. No.:224,752 duce the stepping motor speed below the slewing rate.

' The feedrate clock pulse chain is used by the interpolation logic totrigger two consecutive calculations, the

[52] US. Cl 318/573, 318/685, 318/696, time lapse between the clockpulse and the Second 348/574 318,415 calculation being so short comparedto the time lapse [51] Int. Cl... G05b 19/24 between consecutive clock 1th uh pu ses, a e ac ion m1 1 [58] Field of Search 318/696, 685,573,ated by the results of the calculations can be consid 318/574 415 eredfor all intents and purposes to be coincident with the clock pulse. Thefirst calculation alwa s generates [56] References Clted a major axisinterpolation pulse, during the second UNITED STATES PATENTS calculationan error accumulation register is tested to 3,585,478 6/l97l Leenhouts318/574 determine whether a minor axis interpolation pulse 3,525, 7 /197L uts 8/57 should be generated to minimize the error from the 318/573programmed path. Thus the major axis interpolation 3,422,325 1/1969Gerber et al 318/574 Primary Examiner-G. R. Simmons Att0rneyDexter N.Shaw et al.

A multi-axis machine tool or the like employing controls for an openloop stepping motor system of two or more axes in which variablefrequency feedrate clock pulses are generated to ultimately control thespeed of pulse chain corresponds directly to the frequency of thefeedrate clock chain, the minor axis interpolation pulse chain may beirregular with respect to the chain of feedrate clock pulses. Apredetermined member of interpolation pulses are then used to generateeach of the major and minor axis step pulses so that any irregularity inminor axis pulse frequency is eliminated and resolution is improved.

ABSTRACT 14 Claims, 11 Drawing Figures the various stepping motors. Thefrequency of the IIIIIIIAIII h I l I :/z/

FIG]

w M A f 1 r NM UW pwzw 0 WO 0P0 #0 M a m i A 6 4 5 5 4 5 M w 2 a T T 5iv 0 a 0 6 2 A M 6 4 MIMI & l .r

A?! II II II II IIJII II I FIGS).

I I I I I I I I I /0 mew/ owwow PATENIEI] HOT 23 ms SHEET [1F 4 1CONTROL SYSTEM FOR PRODUCING MULTI-AXIS CONTOUR MOVEMENT FOR A STEPPINGMOTOR DRIVE This invention relates to automatically controlling themotion of machine tool slides and other multi-axis mechanisms by usingstep motors. Considering the machine tool application as typical, acontrol system is provided for causing tool movement relative to a workpiece to achieve two or three dimensional contouring of the work pieceto a predetermined shape in accordance with a predetermined program.

In the prior art machine tool controls have been capable of producinglinear tool movement in any angular direction with instructions thatconsist of only the final coordinates of the next desired point relativeto-a known point. Additionally, machine tool controls have been devisedwhich are capable of producing circular arcuate movement of tools inwhich the only instructions required consist of the final coordinates ofthe arc and the relationship of the first point on the arc to the arcscenter.

Some prior controls, such as that described in United States Pat. No.3,422,325 to Gerber rely upon feedback for error correction. Others usean open loop and stepping motors, as described in United States Pat. No.3,525,917 to Leenhouts, and must rely upon the inherent accuracy of thesystem and the precision of stepping and control thereof for accuracy.

The present invention relates to the latter type of system which in moregeneral terms is applicable to a system capable of moving one partrelative to another by relative movement of at least three seriesconnected relatively movable members along at least two predeterminedaxes defined by cooperating structure of adjacent members. The systemhas at least two stepping motors, each acting between and moving saidadjacent membersalong the predetermined axes in discrete increments. Theat least two step motors acting together drive said parts along a seriesof successive segments approximating a predetermined path. Systems aredescribed herein for the minimum components defined as well as forsystems employing four series connected members providing three axesmotion along which is provided by three stepping motors.

More specifically the invention relates to improved interpolation meansfor the control of stepping motors driving slides or other moving partson a multi-axis mechanism in order to produce the programmed relativemovement along the various axes. The interpolation means in accordancewith the present invention first selects a major axis. Minor axesoperations are then made dependent upon the major axis operation.Interpolation pulse generator means in accordance with the presentinvention generates a major axis pulse for each clock pulse and minoraxis pulses as required by the logic of the system to follow thesegment. The interpolation logic employs means whereby minor axis pulsesare derived only after each major axis pulse upon immediate evaluationof whether a pulse is required along each minor axis and before the nextclock pulse. In accordance with the present invention, instead of usinginterpolation pulses to drive the stepping motor directly, means isprovided for deriving step motor pulses to drive their respectivestepping motors from said interpolation pulses for the respective axes.

A stepping motor effectively consists of a rotor magnetically detentedat fixed positions of a stator. In carrying out the present invention,particular consideration has to be given to the characteristics ofcommercially available stepping motors. in particular a change inenergization of the windings of a stepping motor in a proper sequenceeffects an incremental rotative movement or step; moreover, the sequenceof the change of energization will determine whether the motor willrotate in one direction or the other. At lowstep rates, the rotor willmove in increments from one fixed position to the next and be held bythe magnetic detent. However, at higher step rates, the inertia of therotor and its coupled load are such that if the step commands areinstantaneously removed, the rotor will overdrive the magnetic detent ofthe next position and thus mis-step. In an open loop system, a mis-stepcannot be corrected and thus the system will permanently lose positionand be inaccurate. At this high step rate, the step motor is said to beslewing, i.e., the magnetic force of the stator is sufficient to drivethe rotor from position to position, but not sufficient to overcome theinertia of the rotor and its load.

In accordance with the present invention in order to achieve high speedstepping rates, means is provided to cause the step motor to begradually accelerated to, and decelerated from, the slew rate; moreover,step commands, once slewing is achieved, must be evenly spaced in time.

More specifically, the present invention provides pulse generator meansfor generating a train of pulses of variable frequency including meansfor varying the frequency of pulses generated by said pulse generatormeans both above and below the slewing range of said step motor.Acceleration means causes the pulse generator means to modify pulsefrequency upon demand. Particularly at the beginning of each of thesuccessive segments which together approximate the predetermined paththe pulse frequency is increased from below slewing range into slewingrange at a predetermined rate accomodating the inertial load on the stepmotor. Alsotoward the end ofsuch segments ordinarily means is providedfor sensing the number of steps remaining to be taken to the end of thatsegment and to act upon said acceleration means at discrete distancesbefore the end of the pattern to decrease pulse frequency to below theslewing range before the end of the segment. The discrete distances arealso a function of the feedrate clock pulse frequency.

Also in accordance with the present invention means is provided toprevent stopping the system at any time until the stepping motor speedsare below the slewing rate.

In accordance with the present invention in order to achieve uniformityof pulse frequency input into each stepping motor, the interpolationpulses themselves are not used but step motor pulses are derived fromthe interpolation pulses. This is of particular significance withrespect to the minor axes in which the interpolation pulses may occur inan irregular pattern. The step motor pulses derived from minor axis stepmotor pulses are more evenly spaced in time than their correspondinginterpolation pulses, depending upon and reflecting therate ofgeneration, and therefore are more readily accepted by the minor axisstepping motors without error.

More specifically, in accordance with the present invention, logic meansis provided to select as a major axis that one of the axes having thegreater number of steps to be taken over at least the segment next to befollowed. An interpolation pulse train of evenly spaced pulsesrepresenting the major axis length of the segment is generated. A trainof interpolation pulses is also generated for each minor axisrepresentative of the length of that minor axis segment. Therefore, eachminor axis pulse train is composed at most of no more pulses than themajor axis pulse train and ordinarily fewer pulses, in which event thepulses most commonly are unevenly spaced from one another. Separatemeans are'provided for each of said axes receiving interpolation pulsesfrom said logic means and producing a step motor pulse for apredetermined number of interpolation pulses such that the variations inspacing of the minor axis interpolation pulse output is averaged andpulses representing a fixed speed occur at regular intervals. This meansgenerating step pulses also has the effect of decreasing thepotentialerror in resolution.

Therefore, the present invention, in addition to supplying the numberand sequence of commands to each step motor to produce the movement ofthe parts to the required location by following a linear or arcuatepath, also supplies those commands in such a manner as to provide forthe dynamic characteristics of the step motor, even at slewing rates ofthe motor.

Other features and advantages will hereinafter appear.

For a better understanding of thepresent invention reference is made tothe accompanying drawings in whichv I FIG. 1 is a schematic blockdiagram of a programmable voltage to frequency convertor used togenerate feedrate clock pulses;

FIG. 2 is a chart of the voltage input to the voltage to frequencyoscillator plotted against the distance the axes are away from the homeposition;

FIG. 3 is a representation of the output pulses from the voltage tofrequency convertor;

FIG. 4 is a diagrammatic illustration showing a desired linear path ofmovement and the path -of movement achieved by thev use of the presentinvention;

generating linear motion;

system required to generate linear motion over three control axes; Y v

FIG. 7 is a representation ofv related output pulses chains from thelinear interpolation logic;

FIG. 8 is a representation of the output pulses from the axis scalinglogic as a function of count pulses;

FIG. 9 is a representation of the output pulses from the axis scalinglogic as a function of minor axis input pulses from the linearinterpolation logic;

FIG. 10 is a diagrammatic illustration showing two desired arcuate pathsof movement and the paths of movement achieved by the use of the presentinvention.

FIG. 11 is a schematic block diagram of the system for generating twodimensional arcuate motion.

FIG. 1 shows a block diagram of a variable frequency pulse generatorthat provides the basic clock timing'for the system. The programmedfeedrate means input 10 takes input data from a punched or magnetictape, for example, of from manual means in a formcapable of being storedin binary coded decimal (BCD) form in a register 11. The outputs of thisregister are pulse trains which pass through gate 13. Gate 13 passes thebinary coded decimal signal when the output of deceleration breakpointregister 12 provides a signal on its control terminal. If thedeceleration breakpoints have not been detected, the digital informationstored in the feedrate register is converted by digital to analog '(D/A)converter 14 to an analog voltage that is directly proportional to thenumerical feedrate number. A manually set feedrate override l5 enablesan operator to .visually observe what is happening and make manualadjustments to override the programmed digital feedrateby i 50 percentof that feedrate at run time by proportionally adjusting the adjustingmeans 16 to modify the voltage level of the output of the programmed D/Aconvertor 14. The adjusted voltage is then summed at summing junction 18with the output of the deceleration breakpoint register 12 as modifiedby D/A convertor 17, similar to D/A convertor 14. If no breakpoint hasbeen detected, the outputof deceleration breakpoint D/A convertor 17 isequal to 0. The summed voltage becomes the set point to a ramp generator19 that has two ramp rates, one for positive voltage changes and anotherfor negative voltage changes. Additionally, there is provision foranexternal signal from axis ramp adjustment means 20 to adjust the valueof the positive going ramp rate.- The output of the ramp generator isconverted to a pulse rate by a voltage to frequency oscillator 21 thatprovides the clock timing pulses for the rest of the control system 22.The output of the ramp generator is also monitored by several leveldetectors 23. The outputs of the level detectors are applied to gate 25to control logic signals from a register 24 that contains descretelogical representations of the number of units the major axis is awayfrom the point to which it is programmed to travel.

- The deceleration breakpoint register 12 contains the digitalrepresentation of i a predetermined interrelationship based oncomparison between actual feedrate, as determined by the level detectors23, and the distance left to-betravelled, as determined by thehomedistance register 24."The contents of the deceleration FIG. 5 is aschematic block diagram of the system for breakpoint registerisrconverted to a voltage level by a D/A convertor 17 for using inopposing the analog signal from adjusting means 16. Breakpoints arepreselected. For example, typicalsuccessive breakpoints for a preferredpredetermineddeceleration profile could be set as follows:

a. Feedrate greater than 24 inches per minute and distance from homeless than 400 units.

b. Feedrate greater than 16 inches per minute an distance from home lessthan 200 units.

c. Feedrate greater than 8 inches per minute and distance from homelessthan units.

FIG. 2 is intended to represent an acceleration deceleration patternbased on these figures. Assume the maximum programmed feedrate is 30inches per minme and the programmed travel distance is 1,000 units.Referring to FIG. 2, there is shown a plot of voltage vs. distance to betravelled showing the inter-relationship between the home distance andthe voltage input to the voltage to frequency convertor 21. Immediatelyafter the programmed values are input, the output of the ramp generatorramps up from a residual value at point a, less than the slew rate ofthe motor (in the example shown equivalent to 6 inches per minute) to apoint b and a value equivalent to the program feedrate, e.g., here 30inches per minute. The ramp rate (slope shown by projections 29 alongcoordinates) is selected and set at a value at which the step motorsused in the system can safely pick up the inertial load it :is driving.Since the inertial load from axis to axis may vary considerably, an axisramp adjustment is provided to adjust the ramp as a function of the mostheavily loaded axis. The output of the ramp generator is clamped at 30inches per minute until the home distance is less than 400 units atpoint 0, at which point the first deceleration breakpoint is detected.The output of the feedrate register 11 is then negated by the breakpointregister 12 by removal of the control signal on gate 13 and the voltagevalue of the programmed D/A convertor 14 goes to zero. At the same time,a voltage equivalent to slightly less than 24 inches per minute isoutput by the deceleration breakpoint D/A convertor 17 and input at thesumming junction 18 of the ramp generator 19. The ramp generator thenramps down from point e to point d leveling off at 24 inches per minute.In a similar mamner, breakpoints occur at points e and f in FIG. 2,causing the deceleration profile'shown. The residual value 3 is setbelow the slew rate of the step motor. The number of requiredbreakpoints is a function of the inertia of the step motor and its load,and the system friction. FIG. 3 shows an approximate representation ofthe resultant pulse rate at system output 22.

As seen in FIG. 1 an additional input means 27 is used to negate theoutput of the home distance register 24 so that no decelerationbreakpoints occur. This is desirable when consecutive moves areapproximately tangential so that deceleration is not necessary. Notethat, if feedrates below the slew rate of the step motor, e.g., 8 inchesper minute, are programmed, an acceleration deceleration pattern doesnot occur, the input to the voltage to frequency convertor 21 is alwaysthe adjusted output by adjustment means 16 of the programmed D/Aconvertor 14.

An important advantage of the clock system of FIG. 1 is that the leveldetectors used in conjunction with the home distance to determine thedeceleration breakpoints are constantly monitoring the actual input tothe voltage to frequency convertor.

Another important advantage is that the'use of many discrete breakpointsenable the step motors to operate with infinitely variable feeds withinthe slewing range of the step motor.

Another important advantage is that the level detectors are used toenable stopping the step motors without mis-stepping. It has beenheretofore indicated that if the step motors are stepping at a pulserate above their slew rate, the motor will mis-step if the commandpulses to the step motor are instantaneously removed. In the presentinvention, depressing a stop button 28 will cause the ramp generator 19to ramp down from its previously commanded rate to a residual rate belowthe slew rate of the step motor. Pulse output to the step motors willcontinue until the level detectors detect that the pulse rate hasdecreased to a rate below the step motor slew rate, at which time a stopenable command 29 will be output.

The output frequency of the variable frequency pulse generatordetermines the step rate of the axis drive motors. Each feedrate clockpulse generates two successive arithmetic calculations, the calculationsoccurring within a few micro-seconds after the positive going rise ofthe clock pulses so that the output generated by the calculations occurnearly simultaneously with the clock pulses. Referring to FIG. 4, themethod of generating two axis linear motion is illustrated. A straightline 40 having a start h and an end i. The line 40 is representative ofa desired path of movement, which is to be approximated from operationof stepping motors on two axes. The movement of each motor along itsaxis consists of increments of movement, or steps, which in accordancewith the present invention are scaled such that a fixed relationshipexists between the number of motor steps and the number of units ofrequired motion. The axes consist of a major axis 41, and a minor axis42, the major axis requiring more units of motion than the minor axis.The distance between the start h and the end i are defined by data alongeach axis, the end is 4 units from the start in the direction of theminor axis 42, and 10 units from the start in the direction of the majoraxis 41.

It can be seen that in order to closely approximate the linear path by aseries of major-minor axes incremental moves, there need be only twopossible move combinations, step the major axis one unit, or step boththe major and minor axes one unit. Thus, in. accordance with the presentinvention for every clock pulse, the major axis is always incrementedone unit; to perform two axis linear interpolation, it is only necessaryto logically determine each clock pulse if the minor axes should also beincremented one unit.

Referring to FIG. 5, the block diagram illustrates the logic thatgenerates linear motion in a two dimensional system. It should beunderstood that the logic for a three dimensional system is merely afurther extension of the same type of system. Prior to making eachlinear movement, the major axis register is first set at the number ofunits of movement which will be required by major axis motion, the minoraxis 101 is then set at the number of units of movement which will berequired by minor axis motion, and an accumulator register 102 is set atzero. The variable frequency clock 103, heretofore described inconnection with FIG. 1, generates clock pulses. These pulses are gatedthrough gate in response to an output from a go to position" flip flop104 turned on by appropriate start means 1l8b. Gate 105 controls flow ofthe clock pulses to the interpolation registers. The calculation 1 and 2components 106 and 107 are successive one-shot multivibrators or theequivalent which generate successive pulses which represent successivetime intervals in which successive steps in calculation may occur. Thefeedrate clock pulse actuates the first multivibrator 106 generating apulse whose width gives time for a first arithmetic calculation in thesystem, during which and as the result of the output therefrom the majoraxis register 100 is always decremented by one through decrementalregister 108 and inputs from unit decremental supply source 109, oneshot multivibrator 106 and major axis register 100. Simultaneously, asingle pulse unit is output to the major axis step motor logic 110. Alsothe contents of the minor axis register 101 is added in adder register111 to the contents of the accumulator 102. At the end of the pulsegenerated by multivibrator 106, its output generated an output pulse ofsimilar length from multivibrator 107 giving a second calculationperiod. The output of the accumulator register 102 is tested at the timeby means 112 sensing the positive number storage capacity of theregister to determine whether its contents contain a positive number. Ifit does not, during the second calculation period generated bymultivibrator 107, the input of AND gate 113 has but one signal imposedand no signal is passed to the minor axis step motorlogic 115 so that noaction is taken during the second calculation. However, if theaccumulator 102 does contain a positive number during the secondcalculation interval, AND gate 1 13 passes a signal, the signal outputfrom gate 1 13 causes the minor axis register 101 to be decremented byone through decremental register 1 14 and inputs from the minor axisregister 101 and decremental supply source 109. At the same time the,output gate 113 causes one unit output to the minor axis step motorlogic 115. The output signal from gate 113 also causes the contentsofthe accumulator 102 to be decremented by the contents of major register110 through decremental register 116. Sets of calculations continueuntil the contents of the minor axis register 101 equals zero and is sosensed by detector 117a and the contents of the major axis register 100equals zero and is so sensed by detector 117b, at which time home ANDgate 118a passes a signal to the go to position flip flop 104 which'isturned off closing gate 105 blocking clock pulses 106 from going to theinterpolation registers.

, FIG. 6 illustrates additions to the logic system of FIG. 5 necessaryto the use of a third axis N. Inputs from the system components of FIG.5 are shown to the additional components required. Since the componentsadded are in direct correspondence to the components of the minor axiscomponents of FIG. 5 they have been given corresponding numbers with theaddition of primes thereto. The system furthermore functions withrespect to the major axis components just as the minor axes componentsdescribed in connection with FIG. 5 does. In short, the minor axis N isdependent on the major axis in exactly the same ways as the other minoraxis is. It will be appreciated that other axes may be added in a givensystem, and additional minor axes created thereby will requirereproduction of the system of FIG. 6 for each such additional axis. Thehome gate I 5 works, wheremajor axis movement X 10 and minor axismovement Y 4jthere follows a numerical tabulation resulting from thelinear motion logic. More specifically, the following table gives thecontents of the major axis, minor axis, and theaccumulator registers atthe end of the calculation following the designated clock pulse, andeach major step and minor step designated represent interpolation outputpulse commands to the step motor logic:

Clock Major minor acc Major Minor pulse Register register register Int.int.

step STEP l0 4 0 9 3 l 2 8 3 -2 l 3 7 3 l '1 As seen by referenceto'FIG. 4 and the above table, on the first clock pulse both the majorand minor axis step motor logics receive interpolation pulses, and thetheoretical output is indicated by the diagonal segment 43. The nextclock pulse represents a step parallel to the major axis only alongsegment 44, following by another step along both axes during segment 45.Next three successive steps occur along the major axis to form segment46. Then alternate segments 47 and 49 are produced by two axis movementwith intermediate steps 48 and 50 only along the major axis. The lastsegment 50 terminates coincident with the end point 42 of the desiredpath after the 10th clock pulse.

Since interpolation pulses are accumulated to generate say one steppulse for 10 interpolation pulses, steps are not taken insuch detail andthe path traversed-by the stepping operation along the major and minoraxes does not conform to the path 40. However, it will be noted that'inthe theoretical path'illustrated is the deviation from the desired pathgreater than one unit. By keeping interpolation pulse step units small,the minor deviations would be hardly perceptible. In practice theaveraging effect of pulse accumulation reduces actual deviation evenfurther.

It can be seen that since the number of clock pulses is always equal tothe number of interpolation pulses required on the major axis, eachadditional axis of linear interpolation requires only an additionalaccumulator register and minor axis register, as already suggested inFIG. 6. For example, in that three dimensional system, if a segment hasa major axis length of 10 and using two'minor axis lengths of 4,separate sets of calculations between each of the minor axes and themajor axes, each identical and as shown above, would be taking place. Ifthe minor axis lengths are different from one another the movements willbe different, but both related'to the same clock pulses.

- FIG. 7 shows the-relationship of the clock pulses 1 l9 to'the outputpulses on'the" major and-minor axes l21for the above described example.Themajor axis output pulses are evenly spaced in time and coincidentwith feedrate clock pulses, but the minor axis output pulses are notevenly spaced. Such uneven pulse spacing of minor axis pulses, if leftuncorrected, would cause mis-stepping of the minor axis step motor atany time the minor axis step rate might be in the slewing range. Toavoid this possibility in accordance with the present invention bothmajor and minor axis pulses are collected and averaged to the end thatstep motor drive pulses may be evenly spaced by the scaling logic.

FIG. 8 shows a representation of the timing logic of a commerciallyavailable integrated circuit device, for example, Texas Instrumentintegrated circuit, type SN74192, which acts as a synchronous,programmable 4-bit binary coded decimal up/down counter. One device ofthis type for each axis, or one similar to it, receives interpolationpulses as an input and generates as an averaged output one step motordrive pulse for every ten interpolation pulses input. The internallywired logic in the device is such that its BCD (binary coded decimal)count value changes state on the positive going edge of a count pulse122 which is generated for each interpolation pulse. Input count pulsesinto the circuit go from a positive level to a negative level back tothe positive level; therefore the count value changes on the trailing(positive going) edge of the count pulse. An internal three input gatein the device outputs a carry output pulse 123, when the counter iscounting up, and its BCD output value is set at 9, and an input countpulse occurs. Similarly an internal gate outputs a borrow output pulse124, when the counter is counting down, and its BCD output value is at0, and an input count pulse occurs.

As used in the present invention, the counting circuit starts its countat a value of 5. The programmed direction of rotation of the step motordetermines whether the device counts up or down. For example, ifclockwise rotation is desired the counter counts up, ifcounter-clockwise rotation is desired the counter counts down. For eachinterpolation pulse command from the interpolation logic 110, 115, thecounter is either given a count up pulse or a count down pulse 122,depending upon the desired direction of travel. Either a carry outputpulse 123 or a borrow output pulse 124 as generated by the countingcircuit is used to drive the step motor one increment. Since theinterpolation logic outputs 10 units for each motor step increment, thecontrol logic calculates in units which are a magnitude of 10 times theresolution of the step motor. If the ratio of interpolation pulses tostep motor increments were i l to 1, the accuracy of the system could beno better than i 1 step increment. However, using a ratio interpolationpulses to step motor increments of 10 to 1 increases the system accuracyto 1 6/10 of a step increment. This'can be seen in the following chartwhich gives the error between the actual distance moved as a result ofstep motor output pulses and the calculated distance represented by thenumber of interpolation pulses for the above described 10 to 1 ratio.

Count Circuit Value Interpolation Step Motor Pulse Error Pulse(Cummulative) umiuM-Qooauom Etc.

spaced in time. However, minor axis interpolation pulses 125 may not be,and usually are not, evenly spaced in time as shown in FIG. 9. Averagingthe input minor axis interpolation pulses, causes the output pulses 126driving the step motor to become evenly spaced in time. This averaging,in turn, allows a step motor to operate at slewing rates withoutslipping out of step.

An additional feature of the up down counter is that it stores theresidual input-output error at the end of one programmed segment andthen acts to correct the output of the subsequent programmed segment insuch a way that the accumulated input-output error never exceeds i 5/10of an output step motor pulse.

It should be noted in passing that FIGS. 4 and 10 represent greatmagnifications of the increments involved in connection with the presentinvention as a practical matter and, therefore, the length of segmentstaken in the example are for shorter than would be the case inessentially all practical applications.

FIG. 10 illustrates a theoretical pattern of movement in accordance withthe present invention due to interpolation pulse along a path whichapproximates a true arc. Referring to FIG. 10, there are shown twocircular arcs of the same radius taken from a selected origin assigned x=0, y 0: are A with a start point 151 and an end point 152 and are Ewith a start point 154 and an end point 155. It can be seen that inorder to closely approximate are A by a series of incremental moves,there need be only two possible move combinations; i.e., step the X axisone unit or step both the X and Y axis one unit. Similarly, to closelyapproximate arc B by a series of incremental moves, there need be onlytwo possible move combination, i.e., step the Y axis interpolationsystem for generating are A, the X axis can be considered the major axissince its movement occurs at each increment which may be at each clockpulse. Similarly in such a system for, are B, the Y axis can beconsidered the major axis. The distance from the center of the circle toany point currently occupied on the approximated path of an are, such asarcs A and B, generated by the interpolation logic may be expressed interms of rectangular co-ordinates. The X coordinate distance, measuredalong the X axis is denoted as I, with la and lb, respectively,indicating points on arcs A and B in FIG. 10 and the Y coordinatedistance, measured along the Y axis, is denoted as J, with Ja or Jb,respectively, indicating points on arcs A and B in FIG. 10. At the startpoints 151 ofthe are A; Ia= 0, Ja =15. At the'sta'rt point 154 of arc B;Ib 12, Jb 9. If I is greater than I, as in are A, the X axis is themajor axis.- IfI is greater than .I, as in arc B, the Y axis is themajor axis. In the course of a given are it is possible for the majoraxis to change.

Referring to FIG. 11, there is shown a block diagram of a logic systemin accordance with the present inven-- tion that generates interpolationpulses collected and averaged to obtain step motor pulses for arcuatemotion. As with linear interpolation, it is convenient to think oftheoretical motion taking place generated by the interpolation pulses.Initially, the I register 209 is set atthe value of the X coordinatedistance from the circular origin (in FIG. 10) to the start point 151(considering are A in FIG. 10), measured by the X axis. The J register210 is set at the value of the Y coordinate distance from the samecircular origin to the same start point (e.g., point 151) measured alongthe Y axis. The AX register 211 is set at the number of units of X axismotion required to reach the end point (e.g., 152 in arc A). The AYregister 212 is set at the number of units of Y axis motion required toreach the same end point. The accumulator 208 is set at zero. Thevariable frequency clock 20], of the type heretofore described inconnection with FIG. 1, generates clock pulses. These pulses arecontrolled by gate 202 with a go to position flip flop 200 turned on byappropriate start means 235k and then passed by gate 205 controlled byan output from OR gate 236 that closes the gate 205 if either AX or AYequals zero so that clock pulse goes through gate 203 directly into theY axis step logic input 230. If Y =0, the clock pulse goes through gate204 directly into the X axis step logic input 231. If neither AX or AYequals zero, gate 205 enables clock pulses to enter the interpolationregisters. Previous to the first calculation, the major axis isdetermined by comparison to determine if I is greater than J incomparitor 213, or J is greater than I in comparitor 214.

During the first calculation period set by multivibrator 206, if I isgreater than J: 1) the accumulator 208 is augmented by the contents ofthe J register 210 through'the combination of signals on gate 217 by wayof adder register 219, (2) a Y axis step is commanded through Y axisstep' logic input 230, (3) the AY register 212 is decremented by onethrough AY decremental register 225, and (4) the J register 210 isdecremented by one through the J decremental register 226.

If on the other hand during the first calculation, J is greater than I:(1) the accumulator 208 is decremented by the contents of the I register209, through the combination of signals on gate 218 by way of adderregister 220, and (2) X axis step is commanded through X axis steplogicinput 231, (3) the AX register 211 is decremented by one through AXdecremental register224, and (4) the I register 209 is augmented by onethrough the I decremental register 227.

The accumulator register 208 is tested by means 215 and 216 sensing thestorage condition of the accumulator register at the conclusion of thecalculation to determine whether its contents contain a positive or anegative number. If J is greater than I, in accordance with the outputof comparitor 214, and the accumulator regist'er'is not negative assensed by means 216, no action is taken during the second calculationperiod established by multivibrator 207; If I is greater than J, inaccordance with the output of comparator 213, and the accumulatorregister is not positive as sensed by means 215, no action is takenduring the secondcalculation 207. If J is greater than I and theaccumulator is negative as detected by AND gate 221, during the secondcalculation during the period established by multivibra tor 207: (l) theaccumulator 208 is augmented through register 2l9 by the contents of,the J register 210, (2) a Y axis stepis commanded through Y axis steplogic input 230, (3) the AY register 212 is decremented by one throughAY decremental register 225, and (4) the J register 210 is decrementedby one through J decremental register 226.

If I is greater than J and the accumulator is positive as detected byAND gate 221, during the second calculation: (1) the accumulator 208 isdecremented through register 220 by the contents of the I register 209,(2) an X axis step is commanded through X axis step logic input, 231,(3) AX register 211 is decremented by one through AX decrementalregister 224, and, (4) the I register 209 is augmented by one through Jdecremental register 227. Sets of calculations continue until thecontents of both the AX and the AY registers equal zero as detected bysensors 234a and 234b indicating AX and AY 0, respectively. When both AXand AY are zero the AND home gate 235a turns off the go to position"command flip flop 220 blocking clock pulses from entering the logicthrough gate 202.

Summarizing the above logic, a test is made to determine the major axisby' comparing the contents of the I and J register. During the firstcalculation, the major axis is always stepped. During the secondcalculation, the minor axis is stepped only if the signed value of theaccumulator is appropriate.

In the example given above applied to Arc-A in FIG. 10, where I= 0, J15, AX 0, AY 3, the following is a numerical tabulation resulting fromthe arcuate motion logic:

clock I J I acc AX AY pulse register register register register register0 l5 0 9 3' l 1 l5 0 8 3 2 2 l5 1 7 3 2 14 14 7 2 3 3 l4 l2 6 2 4 4 14 95 2 5 5 l4 5 4 2 6 6 l4 0 3 2 7 7 l4 6 2 2 7 13 8 2 1 8 8 13 l I l 9 913 7 0 I 9 12 6 0 l Again in terms of theoretical movement on the firstclock pulse, only the major axis, X, steps; the generated output isindicated by segment 166; The next clock pulse generates motion on boththe major and minor axes 167. Next the major axis moves alone alongsegment 168 for four steps before the next combination major-minor axesmove along segment 169. This is followed by a single major axis stepalong segment 170 and a combination segment 171 to bring the partscoincident with the end point 152 of the desired arc.

The same type of analysis is applicable to are B except that it will beapparent that the major axis is the Y axis and the X axis is the minoraxis. It is, furthermore, apparent that arc B could .be an extension ofare A, in which event at some point the major axis would change from theX axis to the Y axis, which would automatically occur and be sensed bycomparators 213 and 214 in 'the logic system of FIG. 11.

The path traversed by the stepped operation along the major and.minoraxes does not exactly conform to the desired path of arc A.However, it can be shown that at no place in the traversed path is thedeviation greater than 2 units. As with linear interpolation, the outputof the interpolator then enters a scaling device such that 10 units ofinterpolation output equals 1 step motor increment and thus the systemaccuracy for an arcuate portion is within 1 7/10 of a step increment.

The scaling device, heretofore described, also smooths out the pulses sothat there is no sudden change of frequency between steps.

It is accordingly understood that there has been disclosed a method andapparatus for moving a step motor along a' linear path by incrementalmovements on multi-axes or along an arcuate path by incrementalmovements on a X and Y axis at feed rates that are infinitely variablefrom a few steps per second to several thousand steps per second, thestep commands being so output as to takein consideration the dynamicproperties of the step motor.

We claim:

1. In a system capable of moving one part relative to another byrelative movement of at least three series connected relatively movablemembers along at least two predetermined axes defined by cooperatingstructure of adjacent members and having at least two step motors eachacting between and moving said adjacent members along the predeterminedaxes in discrete increments and acting together to drive said partsalong a series of successive segments approximating a predeterminedpath, the improvement comprising clock pulse generator means forgenerating a train of clock pulses;

logic means to select as a major axis that one of the axes having thegreater number of steps to be taken over at least the segment next to befollowed;

interpolation pulse generator means for generating a major axisinterpolation pulse for each clock pulse and minor axis interpolationpulses as required by the logic of the system to follow the segment,said interpolation logic employing means whereby minor axisinterpolation pulses are derived only after each major axis pulse uponimmediate evaluation of whether an interpolation pulse is required alongeach minor axis and before the next clock pulse; and.

means for deriving step motor pulses to drive their respective stepmotors from said interpolation pulses for the respective axes.

2. The system of claim l in which at least two registers are provided tostore remaining major and minor interpolation steps to be taken and anaccumulator register is provided into which predetermined outputs fromthe other registers are transferred to control minor axis interpolationpulses.

3. The system of claim l in which means are provided to generatesuccessive calculation periods defined by successive control pulsesduring the first of which major axis interpolation pulses are alwaysgenerated and during second of which minor axis interpolation pulses maybe generated as required by system logic.

4. The system of claim 3 in which at least two registers are provided tostore remaining major and minor interpolation steps to be taken withmeans to decrement the register containing major axis steps and producea major axis interpolation pulse during the first calculation period andin which an accumulatorregisteris provided to receive calculations fromthe system logic during the first calculation period so that during thesecond calculation period when certain predetermined conditions are met,a minor axis interpolation pulse may be generated by means provided forthat purpose and to decrement the register containing minor axis steps.I

5. The system of claim 4 in which a linear segment is to be followed andin which the at least two registers are major and minor axis registersstoring respectively the interpolation steps to be taken along the majorand minor axes, respectively.

6. The system of claim 4 in which a circular arc segment is to befollowed and in which there are at least four registers storingrespectively the remaining interpolation steps to be taken along firstand second axes and the coordinate position along said first and secondaxes of the current point in the segment being followed.

7. The method of simulating the following of a straight line segment byinterpolation increments along predetermined major and minor axes whereremaining steps to be taken along said axes are stored in major andminor axis registers and certain output logic originating from saidregisters is stored in an accumulator register comprising,

setting the major axis register at the number of interpolation steps ofwhich will be required by major axis motion,

setting the minor axis register at the number of units of interpolationsteps which will be required by minor axis motion,

setting an accumulator register at zero,

using each pulse from a variable frequency clock to generate successivetiming pulses which represent first and second successive time intervalsin which successive steps in calculation may occur,

making a first arithmetic calculation in the period of the first timingpulse during which the major axis.

register is always decremented and a single interpolation pulse isoutput to the major axis step motor logic and the contents of the minoraxis register is added in the accumulator register to the contents ofaccumulator, during the second calculation period testing the output ofthe accumulator register to sense positive number storage capacity ofthe register to determine whether its contents contain a positive numherand if it does not, during the second calculation passing no signal tothe minor axis step motor logic, but

if the accumulator 102 does contain a positive number, passing a signalto cause the minor axis register to be decremented and causing one unitoutput to the minor axis step motor logic 115. 8. The method ofsimulating the following of a circular arc segment by interpolationincrements along predetermined major and minor axes X and Y whereremaining steps to be taken along said axes are stored in AX and AYregisters, the rectangular coordinate position at any given time withrespect to a predetermined origin representing the center of the are arestored in I and J registers corresponding to the X and Y coordinatingfrom said registers is stored in an accumulator register by directlyinterpolation pulses into X and Y step motor logic, respectively,comprising setting the I register at the value of the X coordinatedistance from the circular origin to the start point measured along theX axis,

setting the J register at the value of the Y coordinate distance fromthe same circular origin to the same start point measured along the Yaxis, I

setting the AX register at the number of units of X axis motion requiredto reach the end point of the arc segment,

setting AY register 212 at the number of units of Y axis motion requiredto reach said end point, setting the accumulator at zero,

generating a train of variable frequency clock pulses,

determining if either AX or AY equals zero and, if so directing clockpulse directly into the other axis step logic input.

If neither AX or AY equals zero enabling clock pulses to enter theinterpolation registers,

previous to the first calculation, determining the major axis bycomparison if I is greater than J or J is greater than I,

establishing a first calculation period during which,

if I is greater than J: (1) the accumulator is augmented by the contentsof the J register (2) a Y axis step is commanded through Y axis steplogic input, (3) the AY register is decremented by one and (4) the Jregister is decremented by one, but

if J is greater than I: (1) the accumulator is decremented by thecontents of the I register and (2) X axis step is commanded through Xaxis step logic input (3) the AX register is decremented by one and (4)the I register 209 is augmented by one, Sensing the storage condition ofthe accumulator register at the conclusion of the calculation todetermine whether its contents contain a positive or a negative number,and during a second calculation.

period if J is greater than 1, and the accumulator register is notnegative taking'no action if! is greater than J, and the accumulatorregister is not positive, taking no action J is greater than I and theaccumulator is negative: (l) the accumulator 208 is augmented by thecontents of the J register(2) a Y axis step is commanded through Y axisstep logic (3) the AY register is decremented by one, and (4) the Jregister 210 is decremented by one. lf 1 is greater than J and theaccumulator is positive,

(1) the accumulator is decremented by the contents of the l register,(2) an X axis step is commanded through X axis step logic (3) AXregister 211 is decremented by one, and, (4) the I register 209 isaugmented by one, and continuing calculations until the contents of boththe AX and the AY registers equal zero. 9. In a system capable of movingone part relative to another by relative movement of at least threeseries connected relatively movable members along at least twopredetermined axes defined by cooperating structure of adjacent membersand having at least two step motors each acting between and moving saidadjacent f if members along the predetermined axes in discreteincrements and acting together to drive said parts along a series ofsuccessive segments approximating a predetermined path, the improvementcomprising logic means to select as a major axis that one of the axeshaving the greater number of steps to be taken over at least the segmentnext to be followed,

means genrating an interpolation pulse train of evenly spaced pulsesrepresenting the major axis length of said segment logic means for eachminor axis to generate a train of interpolation pulses the number ofwhich minor axis interpolation pulses is representative of the length ofthat minor axis segment which, pulse train is composed at most of nomore pulses than the major axis pulse train and the pulses in whichtrain may be unevenly spaced;

separate means for each of said axes receiving interpolation pulses fromsaid logic means and producing a step motor pulse for a predeterminednumber of interpolation pulses, whereby the variations in spacing of theminor axis interpolation pulse output is averaged so that pulsesrepresenting a fixed speed occur at regular intervals and so that thepotential error in resolution is decreased.

10. The system of claim 9 in which the separate means for each of theaxes is counter means into which interpolation pulses are fed and at apredetermined count of interpolation pulses an output step motor pulseis generated.

11. The system of claim 10 in which the predetermined count ofinterpolation pulses is some power of 10 for each output step motorpulse.

12. The system of claim 11 in which the count of the counter meansstarts at 5 times some power of ten and counts up or down depending onthe direction of rotation required of the step motor generatingrespectively a carry pulse for count up or a borrow pulse for countdown.

13. The system of claim 10 in which the counter means for each of theaxes are not reset at the end of each programmed segment but theinterpolation counts in each counter means is used as a correction forthe next programmed segment.

14. 'The system of claim 12 in which the counter means for each of theaxes may be at any count at the end of a programmed segment and is notaltered so that it provides a correction of subsequent segments.

1. In a system capable of moving one part relative to another byrelative movement of at least three series connected relatively movablemembers along at least two predetermined axes defined by cooperatingstructure of adjacent members and having at least two step motors eachacting between and moving said adjacent members along the predeterminedaxes in discrete increments and acting together to drive said partsalong a series of successive segments approximating a predeterminedpath, the improvement comprising clock pulse generator means forgenerating a train of clock pulses; logic means to select as a majoraxis that one of the axes having the greater number of steps to be takenover at least the segment next to be followed; interpolation pulsegenerator means for generating a major axis interpolation pulse for eachclock pulse and minor axis interpolation pulses as required by the logicof the system to follow the segment, said interpolation logic employingmeans whereby minor axis interpolation pulses are derived only aftereach major axis pulse upon immediate evaluation of whether aninterpolation pulse is required along each minor axis and before thenext clock pulse; and means for deriving step motor pulses to drivetheir respective step motors from said interpolation pulses for therespective axes.
 2. The system of claim 1 in which at least tworegisters are provided to store remaining major and minor interpolationsteps to be taken and an accumulator register is provided into whichpredetermined outputs from the other registers are transferred tocontrol minor axis interpolation pulses.
 3. The system of claim 1 inwhich means are provided to generate successive calculation periodsdefined by successive control pulses during the first of which majoraxis interpolation pulses are always generated and during second ofwhich minor axis interpolation pulses may be generated as required bysystem logic.
 4. The system of claim 3 in which at least two registersare provided to store remaining major and minor interpolation steps tobe taken with means to decrement the register containing major axissteps and produce a major axis interpolation pulse during the firstcalculation period and in which an accumulator register is provided toreceive calculations from the system logic during the first calculationperiod so that during the second calculation period when certainpredetermined conditions are met, a minor axis interpolation pulse maybe generated by means provided for that purpose and to decrement theregister containing minor axis steps.
 5. The system of clAim 4 in whicha linear segment is to be followed and in which the at least tworegisters are major and minor axis registers storing respectively theinterpolation steps to be taken along the major and minor axes,respectively.
 6. The system of claim 4 in which a circular arc segmentis to be followed and in which there are at least four registers storingrespectively the remaining interpolation steps to be taken along firstand second axes and the coordinate position along said first and secondaxes of the current point in the segment being followed.
 7. The methodof simulating the following of a straight line segment by interpolationincrements along predetermined major and minor axes where remainingsteps to be taken along said axes are stored in major and minor axisregisters and certain output logic originating from said registers isstored in an accumulator register comprising, setting the major axisregister at the number of interpolation steps of which will be requiredby major axis motion, setting the minor axis register at the number ofunits of interpolation steps which will be required by minor axismotion, setting an accumulator register at zero, using each pulse from avariable frequency clock to generate successive timing pulses whichrepresent first and second successive time intervals in which successivesteps in calculation may occur, making a first arithmetic calculation inthe period of the first timing pulse during which the major axisregister is always decremented and a single interpolation pulse isoutput to the major axis step motor logic and the contents of the minoraxis register is added in the accumulator register to the contents ofaccumulator, during the second calculation period testing the output ofthe accumulator register to sense positive number storage capacity ofthe register to determine whether its contents contain a positive numberand if it does not, during the second calculation passing no signal tothe minor axis step motor logic, but if the accumulator 102 does containa positive number, passing a signal to cause the minor axis register tobe decremented and causing one unit output to the minor axis step motorlogic
 115. 8. The method of simulating the following of a circular arcsegment by interpolation increments along predetermined major and minoraxes X and Y where remaining steps to be taken along said axes arestored in Delta X and Delta Y registers, the rectangular coordinateposition at any given time with respect to a predetermined originrepresenting the center of the arc are stored in I and J registerscorresponding to the X and Y coordinating from said registers is storedin an accumulator register by directly interpolation pulses into X and Ystep motor logic, respectively, comprising setting the I register at thevalue of the X coordinate distance from the circular origin to the startpoint measured along the X axis, setting the J register at the value ofthe Y coordinate distance from the same circular origin to the samestart point measured along the Y axis, setting the Delta X register atthe number of units of X axis motion required to reach the end point ofthe arc segment, setting Delta Y register 212 at the number of units ofY axis motion required to reach said end point, setting the accumulatorat zero, generating a train of variable frequency clock pulses,determining if either Delta X or Delta Y equals zero and, if sodirecting clock pulse directly into the other axis step logic input. Ifneither Delta X or Delta Y equals zero enabling clock pulses to enterthe interpolation registers, previous to the first calculation,determining the major axis by comparison if I is greater than J or J isgreater than I, establishing a first calculation period during which, ifI is greater than J: (1) the accumulator is augmented by the contents ofthe J register (2) a Y axis step is commanded through Y axis step logicinput, (3) the Delta Y register is decremented by one and (4) the Jregister is decremented by one, but if J is greater than I: (1) theaccumulator is decremented by the contents of the I register and (2) Xaxis step is commanded through X axis step logic input (3) the Delta Xregister is decremented by one and (4) the I register 209 is augmentedby one, Sensing the storage condition of the accumulator register at theconclusion of the calculation to determine whether its contents containa positive or a negative number, and during a second calculation periodif J is greater than I, and the accumulator register is not negativetaking no action if I is greater than J, and the accumulator register isnot positive, taking no action if J is greater than I and theaccumulator is negative: (1) the accumulator 208 is augmented by thecontents of the J register (2) a Y axis step is commanded through Y axisstep logic (3) the Delta Y register is decremented by one, and (4) the Jregister 210 is decremented by one. If I is greater than J and theaccumulator is positive, (1) the accumulator is decremented by thecontents of the I register, (2) an X axis step is commanded through Xaxis step logic (3) Delta X register 211 is decremented by one, and, (4)the I register 209 is augmented by one, and continuing calculationsuntil the contents of both the Delta X and the Delta Y registers equalzero.
 9. In a system capable of moving one part relative to another byrelative movement of at least three series connected relatively movablemembers along at least two predetermined axes defined by cooperatingstructure of adjacent members and having at least two step motors eachacting between and moving said adjacent members along the predeterminedaxes in discrete increments and acting together to drive said partsalong a series of successive segments approximating a predeterminedpath, the improvement comprising logic means to select as a major axisthat one of the axes having the greater number of steps to be taken overat least the segment next to be followed, means genrating aninterpolation pulse train of evenly spaced pulses representing the majoraxis length of said segment logic means for each minor axis to generatea train of interpolation pulses the number of which minor axisinterpolation pulses is representative of the length of that minor axissegment which, pulse train is composed at most of no more pulses thanthe major axis pulse train and the pulses in which train may be unevenlyspaced; separate means for each of said axes receiving interpolationpulses from said logic means and producing a step motor pulse for apredetermined number of interpolation pulses, whereby the variations inspacing of the minor axis interpolation pulse output is averaged so thatpulses representing a fixed speed occur at regular intervals and so thatthe potential error in resolution is decreased.
 10. The system of claim9 in which the separate means for each of the axes is counter means intowhich interpolation pulses are fed and at a predetermined count ofinterpolation pulses an output step motor pulse is generated.
 11. Thesystem of claim 10 in which the predetermined count of interpolationpulses is some power of 10 for each output step motor pulse.
 12. Thesystem of claim 11 in which the count of the counter means starts at 5times some power of ten and counts up or down depending on the directionof rotation required of the step motor generating respectively a carrypulse for count up or a borrow pulse for count down.
 13. The system ofclaim 10 in which the counter means for each of the axes are not resetat the end of each programmed segment but the interpolation counts ineach counter means is used as a correction for the next programmedsegment.
 14. The system of claim 12 in which the counter means for eachof the axes may be at any count at the end of a programmed segment andis not altered so that it provides a correction of subsequent segments.